package com.example.dw.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单实体类
 * @author system
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("order")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    @TableId(value = "orderid", type = IdType.AUTO)
    private Integer orderid;

    /**
     * 集团/代理商商户号
     */
    @TableField("orgid")
    private Integer orgid;

    /**
     * 商品号
     */
    @TableField("cusid")
    private Integer cusid;

    /**
     * 应用ID
     */
    @TableField("appid")
    private Integer appid;

    /**
     * 交易金额(单位为分)
     */
    @TableField("trxamt")
    private BigDecimal trxamt;

    /**
     * 订单号
     */
    @TableField("reqsn")
    private String reqsn;

    /**
     * 随机字符串
     */
    @TableField("randomstr")
    private String randomstr;

    /**
     * 交易方式
     */
    @TableField("paytype")
    private String paytype;

    /**
     * 签名方式
     */
    @TableField("signtype")
    private String signtype;

    /**
     * 签名
     */
    @TableField("sign")
    private String sign;

    /**
     * 订单标题
     */
    @TableField("body")
    private String body;

    /**
     * 订单有效时间(以分为单位)
     */
    @TableField("validtime")
    private Integer validtime;

    /**
     * 微信小程序支付需要
     */
    @TableField("acct")
    private String acct;

    /**
     * 微信小程序支付回调URL
     */
    @TableField("notify_url")
    private String notifyUrl;

    /**
     * 实名支付身份证号
     */
    @TableField("idno")
    private String idno;

    /**
     * 实名支付真实姓名
     */
    @TableField("truename")
    private String truename;

    /**
     * 实名支付子应用ID
     */
    @TableField("sub_appid")
    private String subAppid;

    /**
     * 订单类型 (1是活动，0是课程)
     */
    @TableField("orderOfType")
    private Integer orderOfType;

    /**
     * 课程ID
     */
    @TableField("courseid")
    private Integer courseid;

    /**
     * 活动场次ID
     */
    @TableField("sessionid")
    private Integer sessionid;

    /**
     * 用户ID
     */
    @TableField("userid")
    private Integer userid;

    /**
     * 订单创建时间
     */
    @TableField("createdAt")
    private LocalDateTime createdAt;

    /**
     * 交易状态 (0：待支付 1：支付成功 2：已过期)
     */
    @TableField("trxstatus")
    private Integer trxstatus;

    /**
     * 订单数量
     */
    @TableField("num")
    private Integer num;

    /**
     * 号码堆
     */
    @TableField("phoneList")
    private String phoneList;

    /**
     * 收银宝交易单号
     */
    @TableField("trxid")
    private String trxid;

    /**
     * 渠道平台交易单号
     */
    @TableField("chnltrxid")
    private String chnltrxid;

    /**
     * 交易完成时间
     */
    @TableField("fintime")
    private String fintime;

    /**
     * 错误原因
     */
    @TableField("errmsg")
    private String errmsg;

    /**
     * 交易类型
     */
    @TableField("trxcode")
    private String trxcode;

    /**
     * 支付时间
     */
    @TableField("payTime")
    private LocalDateTime payTime;

    /**
     * 价格ID
     */
    @TableField("priceid")
    private Integer priceid;

    /**
     * 支付包信息
     */
    @TableField("package1")
    private String package1;

    /**
     * 二维码链接
     */
    @TableField("code_url")
    private String codeUrl;

    /**
     * 用户表单字段
     */
    @TableField("userFormFields")
    private String userFormFields;

    /**
     * 票类型
     */
    @TableField("ticketType")
    private String ticketType;

    /**
     * 备注
     */
    @TableField("remarks")
    private String remarks;

    // 非数据库字段，用于关联查询
    /**
     * 用户名
     */
    @TableField(exist = false)
    private String username;

    /**
     * 课程名称
     */
    @TableField(exist = false)
    private String courseName;

    /**
     * 活动名称
     */
    @TableField(exist = false)
    private String activityName;
} 